package org.footballmanager.pandafootball.system.service;

import org.footballmanager.pandafootball.system.domain.FootClub;
import org.footballmanager.pandafootball.system.domain.FootUser;
import org.footballmanager.pandafootball.system.form.impl.FootClubSearchForm;
import org.springframework.ui.Model;
import org.springframework.web.bind.support.SessionStatus;

import javax.servlet.http.HttpServletRequest;
import java.io.Serializable;
import java.util.List;

public interface FootClubService extends RepeatService<FootClub> {
	/**
	 * 根据赛季获取积分榜
	 * @param isGe24 是否获取场次大于24的
	 * @param sjid 
	 * @return
	 */
	List<FootClub> getScoreboard(boolean isGe24, Long sjid);

	/**
	 * 重新算排名
	 */
	void reComputeRanking(HttpServletRequest request);

	/**
	 * 添加新赛季的俱乐部信息到表中
	 * @param sj
	 * @param request
	 */
	void addNewClubInfo(Long sj, HttpServletRequest request);

	/**
	 * 根据赛季找所有俱乐部其他奖励的对应信息
	 * @param sj
	 * @return
	 */
	List<FootClub> getWinClubsBySj(int i, Long sj);

	/**
	 * 获取当赛季的前i名信息
	 * @param i 第i名
	 * @return 俱乐部信息
	 */
	FootClub getTopClubBySj(int i);

	/**
	 * 保存新的俱乐部信息到数据库
	 * @param user 用户
	 * @param request 请求
	 * @return 主键
	 */
	Serializable saveNewClub(FootUser user, HttpServletRequest request);

	/**
	 * 根据用户主键查找所有对应的俱乐部信息
	 * @param userId
	 * @param sj
	 * @return
	 */
	List<FootClub> getClubsByUseridandSj(Long userId, Long sj);

	/**
	 * 根据赛季和用户主键来获取当前用户的名次
	 * @param userId
	 * @return
	 */
	Boolean findNumByUserId(Long userId);

	/**
	 * 获取top名俱乐部信息
	 * @param sjid
	 * @param top
	 * @param buttom
	 * @return
	 */
	List<FootClub> findTopClub(Long sjid, Integer top, Integer buttom);

    /**
     * 翻页方法
     * @param footClubSearchForm 条件
     * @return 列表
     */
    List<FootClub> findall(FootClubSearchForm footClubSearchForm);

    /**
     * 查询
     * @param entityname 实体类名
     * @param map 参数
     * @param footClubSearchForm 条件
     */
    void search(String entityname, Model map, FootClubSearchForm footClubSearchForm);

    /**
     * 更改球队设置
     * @param footClub 俱乐部实体类
     * @param request 请求
     */
    void changeQd(FootClub footClub, HttpServletRequest request);
}